A virtual machine is a software construct or the like operating on a computing device or the like for the purpose of emulating a hardware system. Typically, although not necessarily, the virtual machine is an application or the like and is employed on the computing device to host a user application or the like while at the same time isolating such user application from such computing device or from other applications on such computing device. A different variation of a virtual machine may, for example, be written for each of a plurality of different computing devices so that any user application written for the virtual machine can be operated on any of the different computing devices. Thus, a different variation of the user application for each different computing device is not needed.
New architectures for computing devices and new software now allow a single computing device to instantiate and run a plurality of partitions, each of which can be employed to instantiate a virtual machine to in turn host an instance of an operating system upon which one or more applications may be instantiated. Typically, although not necessarily, the computing device includes a virtualization layer with a virtual machine monitor or the like that acts as an overseer application or ‘hypervisor’, where the virtualization layer oversees and/or otherwise manages supervisory aspects of each virtual machine and acts as a possible link between each virtual machine and the world outside of such virtual machine.
Among other things, a particular virtual machine on a computing device may require access to a resource associated with the computing device. As may be appreciated, such resource may be any sort of resource that can be associated with a computing device. For example, the resource may be a storage device to store and retrieve data, and generally for any purpose that a storage device would be employed. Likewise, the resource may be any other asset such as a network, a printer, a scanner, a network drive, a virtual drive, a server, a software application, and the like. Accordingly, whatever the resource may be, the virtual machine may in fact be provided with access to services provided by such resource.
Virtual machines are an expensive system resource as they may occupy or consume large amounts of system resources, such as memory, disk space, and/or processor cycles. Furthermore, often virtual machines run and consume system resources while not being utilized. A virtual machine may, for example, inefficiently maintain access over a particular resource that it is not even utilizing. Or a user of the system may inadvertently leave the virtual machine running after use of the virtual machine has ceased.
Conventional and current monitoring systems may track the usage of system objects and accordingly take appropriate measures upon the determination of an inactive object. However, such monitoring systems may not accurately detect the usage of one or more virtual machines. For example, a guest operating system of a virtual machine may be performing maintenance tasks, downloading patches, or performing other operations that may not be related to a primary goal of the guest operating system. Such operations in the form of, for example, process usage or host statistics may inaccurately serve as an indication that the virtual machine is active when in fact the virtual machine may not be actively performing its primary goal.
In addition to determining if a virtual machine is active, a mechanism for the provisioning of virtual machines by a system administrator in order to achieve and maintain a desired state of the system, such as a target usage or threshold value, is not currently available. Such a mechanism may employ a policy administrator to set certain policy requirements, such as a predetermined target usage or threshold level, in order to attain a desired state.
Therefore, a mechanism and system to detect a state of a virtual machine and enforce a set of policies, which in turn may ensure that system resources are not being wasted or mismanaged, are desired.